<?php
class M_publicacion extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las publicaciones de los clientes existentes tanto activas como inactivas, pero no las borradas (-1)
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT publicacion.*, cliente.idCliente as idCliente, cliente.apellido as apellidoCliente, cliente.nombre as nombreCliente, DATE_FORMAT(publicacion.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, DATE_FORMAT(publicacion.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada, DATE_FORMAT(publicacion.fechaCreacion,'%d/%m/%Y') AS fechaCreacionFormateadaCorta
									  FROM publicacion, cliente
									  WHERE publicacion.idCliente=cliente.idCliente AND publicacion.estado<>-1 AND cliente.estado<>-1 $restriccion
									  ORDER BY publicacion.titulo ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener las publicaciones de los clientes activas existentes	
	function buscarActivos($restriccion=null, $order=null, $limit=null){
		$consulta = $this->db->query("SELECT publicacion.*, cliente.idCliente as idCliente, cliente.apellido as apellidoCliente, cliente.nombre as nombreCliente, 
									  DATE_FORMAT(publicacion.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
									  DATE_FORMAT(publicacion.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada, 
									  DATE_FORMAT(publicacion.fechaCreacion,'%d/%m/%Y') AS fechaCreacionFormateadaCorta,
									  DATE_FORMAT(publicacion.fechaCreacion,'%Y-%m-%dT%H:%i:%s-03:00') AS fechaRssFormateada
									  FROM publicacion, cliente
									  WHERE publicacion.idCliente=cliente.idCliente AND publicacion.estado=1 AND cliente.estado<>-1 $restriccion
									  ORDER BY $order
									  $limit");
		return($consulta);
	}
			
	//Este metodo se utiliza para eliminar una publicacion de un cliente
	function eliminar($idPublicacion=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `publicacion` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `publicacion`.`idPublicacion` = " . $this->db->escape($idPublicacion) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una publicacion a un cliente
	function crear($idCliente=null, $titulo=null, $descripcion=null, $imagen=null, $url=null, $nombreSitio=null, $tipoSitio=null, $grupo=null, $cantidadVisitas=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `publicacion` (`idPublicacion`,`idCliente`,`titulo`,`descripcion`,`imagen`,`url`,`nombreSitio`,`tipoSitio`,`grupo`,`cantidadVisitas`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
											        (NULL,".$this->db->escape($idCliente).",".$this->db->escape($titulo).",".$this->db->escape($descripcion).",".$this->db->escape($imagen).",".$this->db->escape($url).",".$this->db->escape($nombreSitio).",".$this->db->escape($tipoSitio).",".$this->db->escape($grupo).",".$this->db->escape($cantidadVisitas).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver una publicacion del cliente en particular usado generalmente en el formulario de modificar
	function get($idPublicacion=null){
		$consulta = $this->db->query("SELECT publicacion.*, cliente.apellido as apellido, cliente.nombre as nombre
									  FROM publicacion, cliente
									  WHERE publicacion.idCliente=cliente.idCliente AND publicacion.estado<>-1 AND publicacion.idPublicacion=".$this->db->escape($idPublicacion)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver una publicacion del cliente anterior o siguiente a una en particular 
	function getContiguo($idPublicacion=null, $cant=null, $idCliente=null){
		do{
			$idPublicacion+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM publicacion
										  WHERE idPublicacion=".$this->db->escape($idPublicacion)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado=='-1' || $consulta->row()->idCliente != $idCliente);
		
		return($consulta->row()->idPublicacion);
	}
	
	//Este metodo se utiliza cuando queremos devolver una publicacion del cliente anterior o siguiente a una en particular (MIS PUBLICACIONES) 
	function getContiguo2($idPublicacion=null, $cant=null, $idCliente=null, $grupo=null){
		if($grupo!=0){
			do{
				$idPublicacion+=$cant;
				$consulta = $this->db->query("SELECT *
											  FROM publicacion
											  WHERE idPublicacion=".$this->db->escape($idPublicacion)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->idCliente != $idCliente || $consulta->row()->grupo != $grupo);
		}else{
			do{
				$idPublicacion+=$cant;
				$consulta = $this->db->query("SELECT *
											  FROM publicacion
											  WHERE idPublicacion=".$this->db->escape($idPublicacion)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->idCliente != $idCliente);		
		}
		
		return($consulta->row()->idPublicacion);
	}
	
	//Este metodo se utiliza para modificar una publicacion de un cliente
	function modificar($idPublicacion=null, $titulo=null, $descripcion=null, $imagen=null, $url=null, $nombreSitio=null, $tipoSitio=null, $grupo=null, $estado=null){
		$consulta = $this->db->query("UPDATE `publicacion`
									 SET `titulo` = ". $this->db->escape($titulo) .",
										 `descripcion` = ". $this->db->escape($descripcion) .",
										 `imagen` = ". $this->db->escape($imagen) .",
										 `url` = ". $this->db->escape($url) .",
										 `nombreSitio` = ". $this->db->escape($nombreSitio) .",										 
										 `tipoSitio` = ". $this->db->escape($tipoSitio) .",
										 `grupo` = ". $this->db->escape($grupo) .",										 
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `publicacion`.`idPublicacion` = " . $this->db->escape($idPublicacion) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>